The design and implementation of distributed data storage systems is complicated by the problem of determining where data is and should be stored. While distributed indexing techniques already exist that map object names to storage locations, they require a substantial amount of storage. These techniques provide no assurance information will be stored near where it will ultimately be accessed. Existing distributed storage techniques have substantial availability and performance issues when failures occur.